<?php
	include_once('Querys.php');
	include_once('vo/Participante.php');
		
	class ParticipanteService extends Querys{
		
		var $tabla = "usuarios";
		
		public function getByProyecto($id_proyecto){
		
			$result = $this->consulta("SELECT usuarios.*, roles.rol FROM usuarios JOIN rel_principal ON usuarios.id = rel_principal.id_usuario JOIN proyectos ON rel_principal.id_proyecto = proyectos.id JOIN roles ON rel_principal.id_rol = roles.id WHERE proyectos.id = $id_proyecto ORDER BY rel_principal.id_rol ASC, usuarios.nombre ASC");
			
			$participantes = array();
			
			while($fila = $this->fetch($result)){
				
				$participante = $this->armarParticipante($fila);
				
				$participantes[] = $participante;
			}
			
			return $participantes;
		}
		
		public function getParticipante($id_usuario, $id_proyecto){
		
			$result = $this->consulta("SELECT usuarios.*, roles.rol FROM usuarios JOIN rel_principal ON usuarios.id = rel_principal.id_usuario JOIN roles ON rel_principal.id_rol = roles.id WHERE usuarios.id = $id_usuario AND rel_principal.id_proyecto = $id_proyecto");
			
			$fila = $this->fetch($result);
			
			$participante = $this->armarParticipante($fila);
			
			return $participante;
		}
		
		public function getByNameOrEmail($texto, $id_proyecto, $rol){
			$result = $this->consulta("SELECT * FROM usuarios WHERE usuarios.usuario = '".$texto."' OR usuarios.email = '".$texto."'");
			
			if(mysql_num_rows($result) > 0){
				$fila = $this->fetch($result);
				$id_usuario = $fila["id"];
				
				if($rol != 3){
					$resultado = $this->consulta("UPDATE rel_principal SET id_rol = 3 WHERE id_rol = $rol AND id_proyecto = $id_proyecto");
				}
				if($this->consulta("INSERT INTO rel_principal VALUES (null, $id_usuario, $id_proyecto, $rol, 1)")){
					$participante = $this->getParticipante($id_usuario, $id_proyecto);
					return $participante;
				}else{
					return false;
				}
			}else{
				return false;
			}
		}
		
		public function getAllJson($q, $id){
		
			$result = $this->consulta("SELECT id, nombre FROM usuarios WHERE nombre LIKE '%$q%' AND id NOT IN (SELECT id_usuario FROM rel_principal WHERE id_proyecto = $id) ORDER BY usuarios.nombre ASC");
			
			$participantes = array();
			
			while($fila = $this->fetch($result)){
				
				$participante = array();
				$participante['value'] = $fila['id'];
				$participante['name'] = $fila['nombre'];
				
				$participantes[] = $participante;
			}
			
			return $participantes;
		}
		
		public function getDestinatarios($q, $id_usuario)
		{
			$result = $this->consulta("SELECT id, nombre FROM usuarios WHERE nombre LIKE '%$q%' AND id IN (SELECT id_usuario FROM rel_principal WHERE id_proyecto IN (SELECT id_proyecto FROM rel_principal WHERE id_usuario = $id_usuario) GROUP BY id_usuario) ORDER BY usuarios.nombre ASC");
			
			$participantes = array();
			
			while($fila = $this->fetch($result)){
				
				$participante = array();
				$participante['value'] = $fila['id'];
				$participante['name'] = $fila['nombre'];
								
				$participantes[] = $participante;
			}
			
			return $participantes;
		}

		public function invitar($usuarios, $id_proyecto){
			$usuarios = substr($usuarios, 0, -1);
			$arrayUsuarios = explode(",", $usuarios);
			$participantes = array();
			
			foreach($arrayUsuarios as $id){
				if($this->consulta("INSERT INTO rel_principal VALUES(null, $id, $id_proyecto, 3, 1)")){
					$participante = $this->getParticipante($id, $id_proyecto);
					$participantes[] = $participante;
					$this->enviarMail($participante->email, "Te han agregado a un nuevo proyecto de Scrumorg, para saber mas debes ingresar a la aplicac&oacute;n.");
				}
			}
			
			return $participantes;
		}
		
		public function delete($id_usuario, $id_proyecto){
			if($this->consulta("DELETE FROM rel_principal WHERE id_usuario = $id_usuario AND id_proyecto = $id_proyecto")){
				$participante = $this->getParticipante($id_usuario, $id_proyecto);
				$this->enviarMail($participante->email, "Te han agregado a un nuevo proyecto de Scrumorg, para saber mas debes ingresar a la aplicac&oacute;n.");
				return true;
			}else{
				return false;
			}
		}
		
		private function armarParticipante($fila){
			
			$participante = new Participante();
			$participante->id = $fila["id"];
			$participante->nombre = $fila["nombre"];
			$participante->apellido = $fila["apellido"];
			$participante->email = $fila["email"];
			$participante->imagen = $fila["imagen"];
			$participante->rol = $fila["rol"];
			$participante->usuario = $fila["usuario"];
			
			return $participante;
		}
		
		private function enviarMail($email, $mensaje){
		
			$header = "From: Scrumorg <".Conexion::EMAIL.">\r\n";
			$header .= "X-Mailer: PHP/" . phpversion() . "\r\n";
			$header .= "MIME-Version: 1.0\r\n";
			$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
			$header .= "Content-Transfer-Encoding: 7bit\r\n";
			$para = $email;
			
			$asunto = 'Proyecto Nuevo - ScrumOrg';
			
			$titulo = "Proyecto Nuevo.";
			$texto = $mensaje;
			$link = Conexion::HTTP . Conexion::URL_BASE."/home";
			
			include("../controller/email.php");
			
			if(mail($para, $asunto, $mensaje, $header)){
				return true;
			}
		}
	}
?>